<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="tllDc" id="tllDc"><span data-lake-id="u3448f6f0" id="u3448f6f0">典型回答</span></h1>
  <p data-lake-id="u7df9950a" id="u7df9950a"><br></p>
  <p data-lake-id="ub7e5ef3c" id="ub7e5ef3c"><span data-lake-id="u90ae2cc1" id="u90ae2cc1">DNS，是Domain Name System的缩写，翻译成域名系统。它作为将域名和IP地址相互映射的一个分布式数据库，能够使人更方便地访问互联网。</span></p>
  <p data-lake-id="u66324f86" id="u66324f86"><span data-lake-id="uc44fc3d5" id="uc44fc3d5">​</span><br></p>
  <p data-lake-id="ua60f0b55" id="ua60f0b55"><strong><span data-lake-id="u513d82e3" id="u513d82e3">DNS最主要的作用就是将域名翻译成ip地址。</span></strong></p>
  <p data-lake-id="u4ee65f36" id="u4ee65f36"><br></p>
  <blockquote data-lake-id="ub2868325" id="ub2868325">
   <p data-lake-id="udb6292b3" id="udb6292b3"><span data-lake-id="u09c17c6f" id="u09c17c6f">IP地址是IP Address的缩写，指互联网协议地址（英语：Internet Protocol Address，又译为网际协议地址）。IP地址是IP协议提供的一种统一的地址格式，它为互联网上的每一个网络和每一台主机分配一个逻辑地址，以此来屏蔽物理地址的差异。</span></p>
  </blockquote>
  <p data-lake-id="u8e055594" id="u8e055594"><span data-lake-id="ua7e2f773" id="ua7e2f773">​</span><br></p>
  <p data-lake-id="u35e09e46" id="u35e09e46"><span data-lake-id="ud5c5f67d" id="ud5c5f67d">互联网上的每一台计算机，都会分配到一个IP地址。IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址，才能正常通信。</span></p>
  <p data-lake-id="ub85ec146" id="ub85ec146"><span data-lake-id="u075b1655" id="u075b1655">​</span><br></p>
  <p data-lake-id="u2717d391" id="u2717d391"><span data-lake-id="ue45fba3f" id="ue45fba3f">IP地址是一个32位的二进制数，通常被分割为4个“8位二进制数”（也就是4个字节）。IP地址通常用“点分十进制”表示成（a.b.c.d）的形式。如：208.80.152.2</span></p>
  <p data-lake-id="ufe186afb" id="ufe186afb"><br></p>
  <blockquote data-lake-id="u64a8d809" id="u64a8d809">
   <p data-lake-id="ufade7896" id="ufade7896"><span data-lake-id="ufd49391f" id="ufd49391f">域名，这个是很多人都熟悉的概念，我们大多数情况下，在浏览器上访问某个网站的时候，都是通过域名访问的。</span></p>
  </blockquote>
  <p data-lake-id="uf238b136" id="uf238b136"><span data-lake-id="u61c689d7" id="u61c689d7">​</span><br></p>
  <p data-lake-id="u609ee584" id="u609ee584"><span data-lake-id="ua25c0047" id="ua25c0047">域名是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称，用于在数据传输时标识计算机的电子方位。</span></p>
  <p data-lake-id="u57c538b9" id="u57c538b9"><span data-lake-id="u5adcafed" id="u5adcafed">​</span><br></p>
  <p data-lake-id="u72887d32" id="u72887d32"><span data-lake-id="uee58c3c1" id="uee58c3c1">域名可以说是一个IP地址的代称，目的是为了便于记忆后者。</span></p>
  <p data-lake-id="ua4d04bf3" id="ua4d04bf3"><span data-lake-id="uf296d7c7" id="uf296d7c7">​</span><br></p>
  <p data-lake-id="u7bfc8197" id="u7bfc8197"><span data-lake-id="u601c0d3a" id="u601c0d3a">例如，wikipedia.org是一个域名，和IP地址208.80.152.2相对应。人们可以直接访问wikipedia.org来代替IP地址，然后域名系统（DNS）就会将它转化成便于机器识别的IP地址。</span></p>
  <p data-lake-id="u256a1f6e" id="u256a1f6e"><span data-lake-id="u3fbc6824" id="u3fbc6824">​</span><br></p>
  <p data-lake-id="u3b359de7" id="u3b359de7"><span data-lake-id="ucd2bdfe0" id="ucd2bdfe0">这样，人们只需要记忆wikipedia.org这一串带有特殊含义的字符，而不需要记忆没有含义的数字。</span></p>
  <p data-lake-id="u80130a6e" id="u80130a6e"><span data-lake-id="ue72df6ef" id="ue72df6ef">​</span><br></p>
  <h3 data-lake-id="N1BAC" id="N1BAC"><span data-lake-id="ud154d5bd" id="ud154d5bd">DNS解析</span></h3>
  <p data-lake-id="ud15cfc24" id="ud15cfc24"><span data-lake-id="u3755bcaa" id="u3755bcaa">在现实生活中，我们可能经常需要通过电话找人，每一台接入网络的电话都有一个自己独一无二的号码。</span></p>
  <p data-lake-id="ua13d9f55" id="ua13d9f55"><span data-lake-id="u84da9e2c" id="u84da9e2c">​</span><br></p>
  <p data-lake-id="ue1161883" id="ue1161883"><span data-lake-id="u51a5a3e9" id="u51a5a3e9">有的时候，我们想要打某个公司的客服电话，如想要给工商银行的客服打电话，想查询账户余额。但是我们不知道具体号码，我们可以拨打114，告诉他们自己想要拨打工商银行的电话。然后114的客服会帮你查询到工商银行的电话，并帮你自动转接到工商银行的客服电话。</span></p>
  <p data-lake-id="u9f951096" id="u9f951096"><span data-lake-id="u07a60790" id="u07a60790">​</span><br></p>
  <p data-lake-id="ua9e4b5e1" id="ua9e4b5e1"><span data-lake-id="ua7496276" id="ua7496276">这个过程就和域名、IP地址以及DNS之间的关系比较像了。</span></p>
  <p data-lake-id="ued8973dd" id="ued8973dd"><span data-lake-id="u36f0e63b" id="u36f0e63b">​</span><br></p>
  <p data-lake-id="uf5081d55" id="uf5081d55"><span data-lake-id="u13e7cb15" id="u13e7cb15"> 每一台接入网络的电话 -&gt; 每一台接入网络的计算机</span></p>
  <p data-lake-id="u108c5f10" id="u108c5f10"><span data-lake-id="ubfa3ff88" id="ubfa3ff88"> 工商银行-&gt; 域名</span></p>
  <p data-lake-id="u5a257aa6" id="u5a257aa6"><span data-lake-id="ud2a56a9d" id="ud2a56a9d"> 电话号码 -&gt; ip地址</span></p>
  <p data-lake-id="u080917a4" id="u080917a4"><span data-lake-id="u3529f4eb" id="u3529f4eb"> 114咨询台 -&gt; DNS</span></p>
  <p data-lake-id="u9217ee1f" id="u9217ee1f"><span data-lake-id="ua0cc9c00" id="ua0cc9c00">​</span><br></p>
  <p data-lake-id="u6d51a1cc" id="u6d51a1cc"><span data-lake-id="ue6960e21" id="ue6960e21">有了DNS，我们不需要记住每一个网站的多个IP地址，我们只需要知道这个网站的域名就可以了。就像我们不关心工商银行的客服电话，我们只需要知道我们要找工商银行就可以了。</span></p>
  <p data-lake-id="ue7cef264" id="ue7cef264"><span data-lake-id="u3847f3ad" id="u3847f3ad">​</span><br></p>
  <p data-lake-id="u5889898f" id="u5889898f"><span data-lake-id="u97f73725" id="u97f73725">而且，对于一个网站来说，一个域名会对应其无数个IP地址。会通过负载均衡等方式进行调配。就像工商银行的客服中心也有很多分机的道理是一样的。</span></p>
  <p data-lake-id="u3f459745" id="u3f459745"><span data-lake-id="u890dae9f" id="u890dae9f">​</span><br></p>
  <p data-lake-id="ub570a70d" id="ub570a70d"><span data-lake-id="u8d2a640c" id="u8d2a640c">当我们在浏览器中键入一个域名时，浏览器会向</span><strong><span data-lake-id="u06e877f7" id="u06e877f7">本地DN</span></strong><span data-lake-id="u92c40352" id="u92c40352">S解析器发送一个查询请求（在这之前会先查一下浏览器缓存以及本地的host绑定），询问该域名对应的IP地址。如果本地DNS解析器不知道该域名的IP地址，它将向</span><strong><span data-lake-id="u3e99748a" id="u3e99748a">根DNS服务器</span></strong><span data-lake-id="ufdc7d3dc" id="ufdc7d3dc">发送请求。</span></p>
  <p data-lake-id="u424955cd" id="u424955cd"><span data-lake-id="u33ce1207" id="u33ce1207">​</span><br></p>
  <p data-lake-id="ue17dbc25" id="ue17dbc25"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1691218894187-98ae7363-63fb-4fc4-a7f4-dfca557a513e.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_21%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u2db39917" id="u2db39917"><span data-lake-id="u017c89f2" id="u017c89f2">​</span><br></p>
  <blockquote data-lake-id="ue59664cf" id="ue59664cf">
   <p data-lake-id="u2524f3ec" id="u2524f3ec"><span data-lake-id="u8d1d1abd" id="u8d1d1abd">根DNS服务器是DNS层次结构的最顶层，它不直接提供域名和IP地址的映射，而是指向顶级域名服务器。</span></p>
  </blockquote>
  <p data-lake-id="u010f5eed" id="u010f5eed"><span data-lake-id="ue3697c10" id="ue3697c10">​</span><br></p>
  <p data-lake-id="u13637522" id="u13637522"><span data-lake-id="ub9a3cd7e" id="ub9a3cd7e">然后，本地DNS解析器将向</span><strong><span data-lake-id="u21a7f514" id="u21a7f514">顶级域名服务器</span></strong><span data-lake-id="u0c2fbcd0" id="u0c2fbcd0">发送请求，顶级域名服务器是负责特定顶级域（如.com、.org、.net等）的服务器。顶级域名服务器会告诉本地DNS解析器该域名对应的权威域名服务器。</span></p>
  <p data-lake-id="u21a06a6b" id="u21a06a6b"><span data-lake-id="u6a67e4b0" id="u6a67e4b0">​</span><br></p>
  <p data-lake-id="ua3f13c0d" id="ua3f13c0d"><span data-lake-id="u37047c17" id="u37047c17">接着，本地DNS解析器将向</span><strong><span data-lake-id="ufc224204" id="ufc224204">一级域名服务器</span></strong><span data-lake-id="u0c10b174" id="u0c10b174">发送请求，该服务器是管理该域名的DNS记录的服务器。</span><strong><span data-lake-id="u2e48fa74" id="u2e48fa74">一级域名服务器</span></strong><span data-lake-id="u61f81045" id="u61f81045">会返回该域名对应的IP地址给本地DNS解析器。</span></p>
  <p data-lake-id="ub39c478e" id="ub39c478e"><span data-lake-id="u21ca5e8b" id="u21ca5e8b">​</span><br></p>
  <p data-lake-id="ub96de549" id="ub96de549"><span data-lake-id="u2102ba70" id="u2102ba70">最后，本地DNS解析器将把IP地址返回给Web浏览器，我么就可成功访问了</span></p>
  <p data-lake-id="ub081ca18" id="ub081ca18"><span data-lake-id="u1cefbfe0" id="u1cefbfe0">​</span><br></p>
  <h1 data-lake-id="ACw2Z" id="ACw2Z"><span data-lake-id="ue8244a6e" id="ue8244a6e">扩展知识</span></h1>
  <p data-lake-id="u135644f8" id="u135644f8"><br></p>
  <h2 data-lake-id="TdYI3" id="TdYI3"><span data-lake-id="u352c13a9" id="u352c13a9">DNS污染</span></h2>
  <p data-lake-id="u6cd5fe8c" id="u6cd5fe8c"><br></p>
  <p data-lake-id="uc088e083" id="uc088e083"><span data-lake-id="u7b0420c1" id="u7b0420c1">网域服务器缓存污染（DNS cache pollution），又称域名服务器缓存投毒（DNS cache poisoning），是指一些刻意制造或无意中制造出来的域名服务器数据包，把域名指往不正确的IP地址。</span></p>
  <p data-lake-id="u1aaa22c5" id="u1aaa22c5"><span data-lake-id="ue9ccf931" id="ue9ccf931">​</span><br></p>
  <p data-lake-id="u1ae10c38" id="u1ae10c38"><span data-lake-id="ueb8ae58d" id="ueb8ae58d">其工作方式是：由于通常的DNS查询没有任何认证机制，而且DNS查询通常基于的UDP是无连接不可靠的协议，因此DNS的查询非常容易被篡改，通过对UDP端口53上的DNS查询进行入侵检测，一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器（NS，Name Server）给查询者返回虚假结果。</span></p>
  <p data-lake-id="uf01782e6" id="uf01782e6"><span data-lake-id="u5671998b" id="u5671998b">​</span><br></p>
  <p data-lake-id="u8409e086" id="u8409e086"><span data-lake-id="u01860505" id="u01860505">DNS污染指的是用户访问一个地址，国内的服务器(非DNS)监控到用户访问的已经被标记地址时，服务器伪装成DNS服务器向用户发回错误的地址的行为。为了减免网络上的交通，一般的域名都会把外间的域名服务器数据暂存起来，待下次有其他机器要求解析域名时，可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染，就会把网域内的电脑导引往错误的服务器或服务器的网址。</span></p>
  <p data-lake-id="u3381ff5f" id="u3381ff5f"><span data-lake-id="ub6d142a5" id="ub6d142a5">​</span><br></p>
  <p data-lake-id="ud482d2b9" id="ud482d2b9"><span data-lake-id="ua2fa6d5f" id="ua2fa6d5f">简单点说，DNS污染是指把自己伪装成DNS服务器，在检查到用户访问某些网站后，使域名解析到错误的IP地址。</span></p>
  <p data-lake-id="u92e43130" id="u92e43130"><span data-lake-id="u4eea72ef" id="u4eea72ef">​</span><br></p>
  <p data-lake-id="ue2dba109" id="ue2dba109"><span data-lake-id="ua975ba85" id="ua975ba85">​</span><br></p>
  <h2 data-lake-id="Qw9Tl" id="Qw9Tl"><span data-lake-id="u2bb823af" id="u2bb823af">DNS劫持</span></h2>
  <p data-lake-id="u518c882a" id="u518c882a"><br></p>
  <p data-lake-id="u68abb726" id="u68abb726"><span data-lake-id="ub49c1396" id="ub49c1396">DNS劫持又称域名劫持，是指在劫持的网络范围内拦截域名解析的请求，分析请求的域名，把审查范围以外的请求放行，否则返回假的IP地址或者什么都不做使请求失去响应，其效果就是对特定的网络不能访问或访问的是假网址。</span></p>
  <p data-lake-id="u3622feb1" id="u3622feb1"><span data-lake-id="u8348ea68" id="u8348ea68">​</span><br></p>
  <p data-lake-id="u92625708" id="u92625708"><span data-lake-id="ud4ee4110" id="ud4ee4110">简单点说，DNS劫持指的是通过非法手段，获取DNS服务器的权限，然后把DNS配置进行修改，使域名解析到错误的IP地址。</span></p>
  <p data-lake-id="ua82e7447" id="ua82e7447"><span data-lake-id="u2d20cdc0" id="u2d20cdc0">​</span><br></p>
  <h2 data-lake-id="g43FC" id="g43FC"><span data-lake-id="ud8af1ecd" id="ud8af1ecd">DNS污染和DNS劫持的区别</span></h2>
  <p data-lake-id="u412d1da9" id="u412d1da9"><span data-lake-id="u0299cff9" id="u0299cff9">​</span><br></p>
  <p data-lake-id="ue8e293dd" id="ue8e293dd"><span data-lake-id="uaa8bd900" id="uaa8bd900">DNS劫持是劫持了DNS服务器，进而修改其解析结果。</span></p>
  <p data-lake-id="ua0441037" id="ua0441037"><span data-lake-id="u699ec24b" id="u699ec24b">​</span><br></p>
  <p data-lake-id="u3c05114c" id="u3c05114c"><span data-lake-id="u2a740861" id="u2a740861">DNS污染是国内的某些服务器对DNS查询进行入侵检测，发现与黑名单上匹配的请求，该服务器就伪装成DNS服务器，给查询者返回虚假结果。它利用了UDP协议是无连接不可靠性。</span></p>
  <p data-lake-id="u5695928d" id="u5695928d"><span data-lake-id="u6ade95c9" id="u6ade95c9">​</span><br></p>
  <p data-lake-id="ua092550b" id="ua092550b"><span data-lake-id="ub413bb8a" id="ub413bb8a">一个是劫持了DNS服务器，一个是伪装成DNS服务器。造成的结果都是返回错误的IP地址。</span></p>
  <p data-lake-id="u4cb7f6f4" id="u4cb7f6f4"><span data-lake-id="uce5464af" id="uce5464af">​</span><br></p>
 </body>
</html>